#include <iostream>
#include <cstdlib>
#include <cmath>
#include <ctime>
#include <util.h>

using namespace std;

static int gMin = 1;
static int gMax = 64;

void generarCasosAleatorios( ostream &salida ) {
	srand( time( 0 ) );
	for ( int i = gMin; i < gMax; i++ ) {
		int numero = 1 << (i >> 1);
		int a = (numero + rand() % numero);
		int b = (numero + rand() % numero);
		if ( b > a )
			salida << a << ' '<< b << '\n';
		else
			salida << b << ' ' << a << '\n';
	}
}

void generarMejorCaso( ostream &salida ) {
	generarCasosAleatorios( salida );
}

void generarPeorCaso( ostream &salida ) {
	generarCasosAleatorios( salida );
}

bool establecerMaximo( const char *str ) {
	if ( !str2int( str, &gMax ) ) {
		cerr << "Máximo no reconocido, debe ser un número entero.\n";
		return false;
	}
	return true;
}

bool establecerMinimo( const char *str ) {
	if ( !str2int( str, &gMin ) ) {
		cerr << "Mínimo no reconocido, debe ser un número entero.\n";
		return false;
	}
	return true;
}